package com.syg.validation.controller;

import com.syg.validation.domain.User;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author syg
 */
@RestController
public class ValidationController {

    /**
     * POST、PUT请求一般会使用requestBody传递参数，这种情况下，后端使用DTO对象进行接收。
     * 只要给DTO对象加上@Validated注解就能实现自动参数校验。
     * 比如，有一个保存User的接口，要求userName长度是2-10，account和password字段长度是6-20。
     *
     * 如果校验失败，会抛出MethodArgumentNotValidException异常，Spring默认会将其转为400（Bad Request）请求。
     *
     * 这种情况下，使用@Valid和@Validated都可以。
     * @param user
     * @return
     */
    @PostMapping("/save")
    public String saveUser(@RequestBody @Validated User user) {
        // 校验通过，才会执行业务逻辑处理
        return "成功";
    }
}
